package com.pai4j.message.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.HashMap;
import java.util.Map;

/**
 * 资源元数据
 * 用于扩展资源的额外属性信息
 *
 * @author PAI4J Team
 * @date 2025-11-01
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ResourceMetadata {

    /**
     * 资源分类
     */
    private String category;

    /**
     * 资源标签
     */
    private String[] tags;

    /**
     * 浏览次数
     */
    private Long viewCount;

    /**
     * 点赞次数
     */
    private Long likeCount;

    /**
     * 评论次数
     */
    private Long commentCount;

    /**
     * 收藏次数
     */
    private Long collectCount;

    /**
     * 分享次数
     */
    private Long shareCount;

    /**
     * 是否精选
     */
    private Boolean featured;

    /**
     * 是否置顶
     */
    private Boolean pinned;

    /**
     * 审核状态
     */
    private String auditStatus;

    /**
     * 自定义属性
     */
    @Builder.Default
    private Map<String, Object> customProps = new HashMap<>();

    /**
     * 添加自定义属性
     */
    public ResourceMetadata addCustomProp(String key, Object value) {
        if (this.customProps == null) {
            this.customProps = new HashMap<>();
        }
        this.customProps.put(key, value);
        return this;
    }

    /**
     * 获取自定义属性
     */
    @SuppressWarnings("unchecked")
    public <T> T getCustomProp(String key) {
        return this.customProps != null ? (T) this.customProps.get(key) : null;
    }
}

